home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1997 January: Mac OS SDK / Dev.CD Jan 97 SDK2.toast / Development Kits (Disc 2) / OpenDoc Development Framework / ODFDev / ODF / OS / FWODMisc / FWAcquir.h < prev    next >
Encoding:
Text File  |  1996-09-17  |  8.2 KB  |  283 lines  |  [TEXT/MPS ]

  1. //========================================================================================
  2. //
  3. //    File:                FWAcquir.h
  4. //    Release Version:    $ ODF 2 $
  5. //
  6. //    Copyright:    (c) 1993 - 1996 by Apple Computer, Inc., all rights reserved.
  7. //
  8. //========================================================================================
  9.  
  10. #ifndef FWACQUIR_H
  11. #define FWACQUIR_H
  12.  
  13. #ifndef FWEXCDEF_H
  14. #include "FWExcDef.h"
  15. #endif
  16.  
  17. #ifndef FWEXCLIB_H
  18. #include "FWExcLib.h"
  19. #endif
  20.  
  21. #ifndef FWODTYPS_H
  22. #include "FWODTyps.h"
  23. #endif
  24.  
  25. //========================================================================================
  26. // Forward Class Declarations
  27. //========================================================================================
  28.  
  29. class ODWindow;
  30. class ODFrame;
  31. class ODPart;
  32. class ODRefCntObject;
  33. class ODShape;
  34. class ODTransform;
  35. class ODStorageUnit;
  36. class ODStorageUnitView;
  37. class ODStorageUnitCursor;
  38. class ODMenuBar;
  39. class ODDraft;
  40. class ODDocument;
  41. class ODContainer;
  42.  
  43. //========================================================================================
  44. // class FW_CAcquiredODRefCntObject
  45. //========================================================================================
  46.  
  47. class FW_CAcquiredODRefCntObject
  48. {
  49. public:
  50.     FW_DECLARE_AUTO(FW_CAcquiredODRefCntObject)
  51.  
  52.     FW_CAcquiredODRefCntObject();
  53.     FW_CAcquiredODRefCntObject(const FW_CAcquiredODRefCntObject& other);
  54.     FW_CAcquiredODRefCntObject(ODRefCntObject* refCntObject);
  55.     ~FW_CAcquiredODRefCntObject();
  56.  
  57. protected:
  58.     ODRefCntObject*        PrivOrphan();
  59.     
  60. protected:
  61.     FW_CAcquiredODRefCntObject*    AcquireAndAssign(ODRefCntObject* newObject);
  62.     FW_CAcquiredODRefCntObject*    Assign(ODRefCntObject* newObject);
  63.  
  64. protected:
  65.     ODRefCntObject*        fODObject;
  66. };
  67.  
  68.  
  69. //========================================================================================
  70. // class FW_TAcquiredODRefCntObject
  71. //========================================================================================
  72.  
  73. template<class t> 
  74. class FW_TAcquiredODRefCntObject : public FW_CAcquiredODRefCntObject
  75. {
  76. public:
  77.     FW_TAcquiredODRefCntObject() {}
  78.     FW_TAcquiredODRefCntObject(const FW_TAcquiredODRefCntObject<t>& other) :
  79.         FW_CAcquiredODRefCntObject(other) {}
  80.     FW_TAcquiredODRefCntObject(t* otherPtr) :
  81.         FW_CAcquiredODRefCntObject(otherPtr) {}
  82.     ~FW_TAcquiredODRefCntObject() {}
  83.  
  84.     FW_TAcquiredODRefCntObject<t>& operator=(const FW_TAcquiredODRefCntObject<t>& other)
  85.         {return *(FW_TAcquiredODRefCntObject<t>*)AcquireAndAssign(other.fODObject);}
  86.     FW_TAcquiredODRefCntObject<t>& operator=(t* odObject)
  87.         {return *(FW_TAcquiredODRefCntObject<t>*)Assign(odObject);}
  88.  
  89.     FW_Boolean operator==(const FW_TAcquiredODRefCntObject<t>& other) const
  90.         {return fODObject == other.fODObject;}
  91.     FW_Boolean operator!=(const FW_TAcquiredODRefCntObject<t>& other) const
  92.         {return fODObject != other.fODObject;}
  93.  
  94.     FW_Boolean operator==(t* odObject) const
  95.         {return fODObject == odObject;}
  96.     FW_Boolean operator!=(t* odObject) const
  97.         {return fODObject != odObject;}
  98.  
  99.     operator t*() const
  100.         {return (t*)fODObject;}        
  101.     operator const void*() const
  102.         {return (t*)fODObject;}        
  103.     t* operator->() const
  104.         {return (t*)fODObject;}
  105.     
  106.     t*    Orphan()
  107.         {return (t*)PrivOrphan();}
  108. };
  109.  
  110. //========================================================================================
  111. // Template classes typedef
  112. //========================================================================================
  113.  
  114. #ifndef SOM_ODWindow_xh
  115. #include "Window.xh"
  116. #endif
  117.  
  118. typedef FW_TAcquiredODRefCntObject<ODWindow>                 FW_CAcquiredODWindow;
  119.  
  120. #ifndef SOM_ODFrame_xh
  121. #include "Frame.xh"
  122. #endif
  123.  
  124. typedef FW_TAcquiredODRefCntObject<ODFrame>                 FW_CAcquiredODFrame;
  125.  
  126. #ifndef SOM_ODPart_xh
  127. #include "Part.xh"
  128. #endif
  129.  
  130. typedef FW_TAcquiredODRefCntObject<ODPart>                     FW_CAcquiredODPart;
  131.  
  132. #ifndef SOM_ODShape_xh
  133. #include <Shape.xh>
  134. #endif
  135.  
  136. typedef FW_TAcquiredODRefCntObject<ODShape>                 FW_CAcquiredODShape;
  137.  
  138. #ifndef SOM_ODStorageUnit_xh
  139. #include <StorageU.xh>
  140. #endif
  141.  
  142. typedef FW_TAcquiredODRefCntObject<ODStorageUnit>             FW_CAcquiredODStorageUnit;
  143.  
  144. #ifndef SOM_ODTransform_xh
  145. #include <Trnsform.xh>
  146. #endif
  147.  
  148. typedef FW_TAcquiredODRefCntObject<ODTransform>             FW_CAcquiredODTransform;
  149.  
  150. #ifndef SOM_ODMenuBar_xh
  151. #include <MenuBar.xh>
  152. #endif
  153.  
  154. typedef FW_TAcquiredODRefCntObject<ODMenuBar>                 FW_CAcquiredODMenuBar;
  155.  
  156. #ifndef SOM_ODDraft_xh
  157. #include <Draft.xh>
  158. #endif
  159.  
  160. typedef FW_TAcquiredODRefCntObject<ODDraft>                 FW_CAcquiredODDraft;
  161.  
  162. #ifndef SOM_ODDocument_xh
  163. #include <Document.xh>
  164. #endif
  165.  
  166. typedef FW_TAcquiredODRefCntObject<ODDocument>                 FW_CAcquiredODDocument;
  167.  
  168. #ifndef SOM_ODContainer_xh
  169. #include <ODCtr.xh>
  170. #endif
  171.  
  172. typedef FW_TAcquiredODRefCntObject<ODContainer>             FW_CAcquiredODContainer;
  173.  
  174. //========================================================================================
  175. // class FW_CAcquireODStorageUnitView
  176. //========================================================================================
  177.  
  178. class FW_CAcquireODStorageUnitView
  179. {
  180. public:
  181.     FW_DECLARE_AUTO(FW_CAcquireODStorageUnitView)
  182.  
  183.     FW_CAcquireODStorageUnitView(Environment* ev, 
  184.                                 ODStorageUnit* su, 
  185.                                 ODPropertyName propertyName, 
  186.                                 ODPositionCode propertyPosCode, 
  187.                                 ODValueType valueType, 
  188.                                 ODValueIndex valueIndex, 
  189.                                 ODPositionCode valuePosCode);            // Focus and create the storageView
  190.     FW_CAcquireODStorageUnitView(Environment* ev, ODStorageUnit* su);    // Suppose that already focused
  191.     ~FW_CAcquireODStorageUnitView();
  192.  
  193.     operator ODStorageUnitView*() const
  194.         {return fSUView;}
  195.     ODStorageUnitView* operator->() const
  196.         {return fSUView;}
  197.  
  198. private:
  199.     FW_CAcquireODStorageUnitView(const FW_CAcquireODStorageUnitView& type);
  200.     FW_CAcquireODStorageUnitView& operator=(const FW_CAcquireODStorageUnitView& type);
  201.  
  202. private:
  203.     ODStorageUnitView*    fSUView;
  204. };
  205.  
  206. //========================================================================================
  207. // class FW_CAcquireODISOStr
  208. //========================================================================================
  209.  
  210. class FW_CAcquireODISOStr
  211. {
  212. public:
  213.     FW_DECLARE_AUTO(FW_CAcquireODISOStr)
  214.  
  215.     FW_CAcquireODISOStr();
  216.     FW_CAcquireODISOStr(ODISOStr type);
  217.     FW_CAcquireODISOStr(const FW_CAcquireODISOStr& other);
  218.     ~FW_CAcquireODISOStr();
  219.  
  220.     FW_CAcquireODISOStr& operator=(ODISOStr ISOStr);
  221.     FW_CAcquireODISOStr& operator=(const FW_CAcquireODISOStr& other);
  222.     
  223.     operator ODISOStr() const
  224.         {return fODISOStr;}
  225.  
  226.     operator const void*() const
  227.         {return (const void*)fODISOStr;}        
  228.  
  229. protected:
  230.     void    PrivDeleteODISOStr();
  231.     
  232. protected:
  233.     ODISOStr    fODISOStr;
  234. };
  235.  
  236. //========================================================================================
  237. // class FW_CAcquireODPropertyName
  238. //========================================================================================
  239.  
  240. class FW_CAcquireODPropertyName : public FW_CAcquireODISOStr
  241. {
  242. public:
  243.     FW_DECLARE_AUTO(FW_CAcquireODPropertyName)
  244.  
  245.     FW_CAcquireODPropertyName(Environment* ev, ODStorageUnit* su);
  246.     FW_CAcquireODPropertyName(Environment* ev, ODStorageUnitView* suView);
  247.     FW_CAcquireODPropertyName(Environment* ev, ODStorageUnitCursor* suCursor);
  248.     
  249.     ~FW_CAcquireODPropertyName();
  250.  
  251.     operator ODPropertyName() const
  252.         {return fODISOStr;}
  253.  
  254. private:
  255.     FW_CAcquireODPropertyName(const FW_CAcquireODPropertyName& type);
  256.     FW_CAcquireODPropertyName& operator=(const FW_CAcquireODPropertyName& type);
  257. };
  258.  
  259. //========================================================================================
  260. // FW_CopyAndRelease
  261. //========================================================================================
  262.  
  263. //########################################################################################
  264. // SCpp Hack
  265. // Work around SCpp 8.0.3 bug - importing overloaded functions doesn't work.
  266. // Replace overloaded functions with normal functions with different names.
  267. // Use inline overloaded functions which turn around and call the renamed
  268. // functions so client code isn't affected.
  269. //########################################################################################
  270.  
  271. ODShape*        FW_PrivCopyAndRelease_Shape(Environment* ev, ODShape* shapeToCopy);
  272. ODTransform*     FW_PrivCopyAndRelease_Transform(Environment* ev, ODTransform* transformToCopy);
  273.  
  274. inline ODShape*        FW_CopyAndRelease (Environment* ev, ODShape* shapeToCopy) {
  275.     return FW_PrivCopyAndRelease_Shape (ev, shapeToCopy);
  276. }
  277.  
  278. inline ODTransform* FW_CopyAndRelease (Environment* ev, ODTransform* transformToCopy) {
  279.     return FW_PrivCopyAndRelease_Transform (ev, transformToCopy);
  280. }
  281.  
  282. #endif
  283.